
#ifndef CHESSBOARD_H
#define CHESSBOARD_H

#include "chessdefines.h"

class ChessPane;

//对棋盘的建模
class ChessBoard
{
protected:
    unsigned _paneNumber;       // 棋盘的规格 N x N
    unsigned _paneCount;        // 已经下了多少个棋子

public:
    char secondHandColor;       // 后手的颜色（记录后下棋的较为方便)
    ChessPane* lastPane;        // 最后下的一个棋子
    ChessPane* lastPane2;       // 倒数第二个棋子
    vector<unsigned long> orders;   // 下棋的坐标顺序记录
    Vector2 signGrid;           // 棋局落子情况标记
    vector<vector<ChessPane*> > paneGrid;   // 记录每个棋子的指针

public:
    ChessBoard(int n = 15);     // 构造 n x n的棋局
    void showBoard();           // 以简单的方格样式在命令行中
    void cleanUp();             // 清空棋盘，重新来过
    bool scanBoard();           // 判断刚才的落子是否能够胜利
    // 返回下一次最佳落子点。(以 lastChess 为对手)
    bool getBestPlace(int& x, int& y);
    bool saveChess(int x, int y);   // 以轮流的方式，在(x,y)上下棋子
    unsigned paneNumber() const {return _paneNumber;};
    bool undo();                // 悔棋一步
};

#endif // CHESSBOARD_H

